﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ParasitoLibrary.Core.Entidade;
using ParasitoLibrary.DataAccess;

namespace ParasitoLibrary.Business.Controle
{
    public class ControleQuestoes
    {

        #region .:> Singleton

        private static ControleQuestoes instancia = null;
        private static object objSincronizado = new object();

        private ControleQuestoes()
        {
        }

        public static ControleQuestoes getInstancia()
        {
            if (instancia == null)
            {
                lock (objSincronizado)
                {
                    if (instancia == null)
                    {
                        instancia = new ControleQuestoes();
                    }
                }
            }
            return instancia;
        }

        #endregion

        public void exportarQuestoes(string arquivoQuestoes)
        {
            DAOQuestoes.getInstancia().exportarQuestoes(arquivoQuestoes);
        }

        public void importarQuestoes(string arquivoQuestoes)
        {
            DAOQuestoes.getInstancia().importarQuestoes(arquivoQuestoes);
        }

        public int calcularTotalPerguntas(Nivel nivel, Assunto assunto)
        {
            Questoes questoes = DAOQuestoes.getInstancia().carregarQuestoes();
            int valorRetorno = 0;

            foreach (Questao questao in questoes.ListaQuestao)
            {
                if (questao.Nivel.Codigo.ToLower().Equals(nivel.Codigo.ToLower()) && questao.Assunto.Codigo.ToLower().Equals(assunto.Codigo.ToLower()))
                {
                    valorRetorno = valorRetorno + 1;
                }
            }

            return valorRetorno;
        }

        public Questoes carregarQuestoes(Nivel nivel, Assunto assunto)
        {
            Questoes questoes = DAOQuestoes.getInstancia().carregarQuestoes();
            Questoes questoesRetorno = new Questoes();

            foreach (Questao questao in questoes.ListaQuestao)
            {
                if (questao.Nivel.Codigo.ToLower().Equals(nivel.Codigo.ToLower()) && questao.Assunto.Codigo.ToLower().Equals(assunto.Codigo.ToLower()))
                {
                    questoesRetorno.ListaQuestao.Add(questao);
                }
            }

            return questoesRetorno;
        }
    }
}
